package co.gov.medellin.sdep.sisdep.integration.apisub.service;

import java.util.List;

import co.gov.medellin.sdep.sisdep.common.service.BaseService;
import co.gov.medellin.sub.api.common.BeneficiaryManagerFacade;
import co.gov.medellin.sub.api.vo.BeneficiaryVO;

/**
 * Cliente de consulta usado para la transferencia de informacion de los
 * beneficios entregados por la Alcaldia de Medellin a un Ciudadano.
 * 
 * @author carlos.perez@consult-soft.com 
 * @version 01-06-2012
 */
public class APISUBServiceImpl extends BaseService {

	//----------------------------------------------------------------------
	//--- propiedades y constructores                                 init()
	//----------------------------------------------------------------------

	/**
	 * default serial version
	 */
	private static final long serialVersionUID = 8765342898574678589L;
	
	/** Objeto que permite el manejo de las consultas al Sistema SUB de la Alcaldia de Medellin */
	private BeneficiaryManagerFacade subFacade = null;	

	/**
	 * Constructor por defecto
	 */
	public APISUBServiceImpl() {
       this.subFacade = new BeneficiaryManagerFacade();
	}

	/**
	  * 
	  * Metodo que permite obtener la informacion base de una persona registrada en el SUB de la Alcaldia de Medellin. 
	  * Esto por medio del numero de cedula.
	  * 
	  * @author carlos.perez@consult-soft.com  
	  * @version 08-06-2012 
	  * @param docID numero de cedula
	  */
	  public BeneficiaryVO getSUBInfoByDocID(String docID)  {
		  BeneficiaryVO benVO = null;
		  
		  if(subFacade != null) {
			try {
			  benVO = subFacade.getBeneficiaryInformation("C", docID);
			}catch(Exception e) {
			  System.err.println("SISDEP::getSUBInfoByDocID-->BeneficiaryVO ERROR(docID):" + docID);
			  e.printStackTrace(System.err);
			}		  
		  }
		  return benVO;
	  }


  /**
    * 
	* Metodo que permite obtener un listado de beneficios otorgados por la Alcaldia de Medellin que estan 
	* registardos en el sistema SUB. Esto por medio del numero de cedula.
	* 
	* @author carlos.perez@consult-soft.com  
	* @version 08-06-2012 
	* @param docID numero de cedula
	*/
	public List loadSUBDataByDocID(String docID)  {
		List subDataList = null; 
		
		if(subFacade != null) {	
			try {
				// Permite consultar un conjunto de beneficios tipo: BenefitVO. Esta una informacion mas especifica y tecnica.
				// USADO actualmente en SISDEP debido a que retorna un conjunto de Beans VO con informacion mas de cara al NEGOCIO. 
				subDataList = subFacade.reportBenefits("C", docID);
				
				// Permite consultar un conjunto de beneficios tipo: ReportVO. Esta es una informacion tipo Reporte de Negocio
				// NO usado actualmente en SISDEP debido a que retorna un conjunto de Beans VO con informacion mas especifica. 
				// subDataList = subFacade.loadBenefitsByBeneficiary("C", docID);
				
			}catch(Exception e) {
			  System.err.println("SISDEP::loadSUBDataByDocID-->subDataList ERROR(docID):" + docID);
			  e.printStackTrace(System.err);
			}
		}	
		return subDataList;
	}

}
